package cn.ycc1.mymiddle.config;

import com.alibaba.cloud.ai.dashscope.api.DashScopeApi;
import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatModel;
import com.alibaba.cloud.ai.dashscope.rag.DashScopeDocumentRetriever;
import com.alibaba.cloud.ai.dashscope.rag.DashScopeDocumentRetrieverOptions;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.rag.retrieval.search.DocumentRetriever;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author ycc
 * @date 2025/5/1
 */
@Configuration
public class AiConfig {

//    @Value("${spring.ai.openai.api-key}")
//    private String apiKey;
//
//    @Bean
//    public OpenAiChatModel openAiChatModel() {
//        return OpenAiChatModel.builder()
//                .apiKey(apiKey)
//                .baseUrl("https://api.deepseek.com/v1")
//                .modelName("deepseek-r1")
//                .temperature(0.7)  // 设置随机性
//                .build();
//    }

    @Value("${spring.ai.dashscope.api-key}") // 从配置读取API密钥
    private String dashscopeApiKey;

    // 1. 先创建 DashScopeApi 客户端
    @Bean
    public DashScopeApi dashScopeApi() {
        return new DashScopeApi(dashscopeApiKey); // 使用API密钥初始化
    }

    // 2. 创建 DocumentRetriever，注入 DashScopeApi 对象
    @Bean
    public DocumentRetriever documentRetriever(DashScopeApi dashScopeApi) {
        return new DashScopeDocumentRetriever(
                dashScopeApi, // 这里传入 DashScopeApi 对象，而不是字符串
                DashScopeDocumentRetrieverOptions.builder()
                        // .withIndexName("cc-spring-ai知识库")
                        .withIndexName("cc-springai-alibaba")
                        .build()
            );
    }
//    @Bean
//    public DashScopeChatModel chatModel() {
//        return DashScopeChatModel.create(apiKey); // 假设有 create() 方法
//    }

//    @Bean
//    public DashScopeChatModel chatModel() {
//        return DashScopeChatModel.builder()
//                .apiKey(apiKey) // 设置 API Key
//                .model("qwen-turbo") // 通义千问模型，例如 qwen-turbo / qwen-plus
//                .temperature(0.7) // 控制随机性（0~1）
//                .topP(0.8) // 采样策略（可选）
//                .enableSearch(true) // 是否联网搜索（可选）
//                .build();
//    }
}